# Retrieve detailed user information by ID

Fetches comprehensive details about a specific user including their account association, profile information, roles, state, statistics, and activity data. Requires either Users.Read or Users.Manage permission.

RBAC:
- requires ALL of Users.Manage
- requires ANY of Users.Read, Users.Manage

Endpoint: GET /api/v1/admin/user/{userId}
Version: 1.0
Security: header

## Path parameters:

  - `userId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

## Response 200 fields (application/json):

  - `userId` (string, required)
    Internal ID of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `accountId` (string,null)
    ID of the account this user belongs to, empty for remote users
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `username` (string, required)
    Unique username
    Example: "john_smith"

  - `displayName` (string, required)
    Full name of the user
    Example: "John Smith"

  - `email` (string,null)
    User's email address
    Example: "john@example.com"

  - `domain` (string,null)
    User's domain
    Example: "domain.net"

  - `local` (boolean, required)
    Whether this user is local to this server

  - `numPosts` (integer, required)
    Number of posts by this user

  - `numFollowers` (integer, required)
    Number of followers this user has

  - `createdAt` (string, required)
    When this user was created
    Example: "2022-03-10T16:15:50Z"

  - `deletedAt` (string,null)
    When this user was deleted, if applicable
    Example: "2022-03-10T16:15:50Z"

  - `lastActive` (string,null)
    When this user was last active
    Example: "2022-03-10T16:15:50Z"

  - `lastIP` (object,null)
    Last IP address used by this user

  - `lastIP.multicastAddress` (boolean)

  - `lastIP.anyLocalAddress` (boolean)

  - `lastIP.loopbackAddress` (boolean)

  - `lastIP.linkLocalAddress` (boolean)

  - `lastIP.siteLocalAddress` (boolean)

  - `lastIP.MCGlobal` (boolean)

  - `lastIP.MCNodeLocal` (boolean)

  - `lastIP.MCLinkLocal` (boolean)

  - `lastIP.MCSiteLocal` (boolean)

  - `lastIP.MCOrgLocal` (boolean)

  - `lastIP.hostName` (string)

  - `lastIP.address` (string)

  - `lastIP.hostAddress` (string)

  - `lastGeoData` (object,null)
    Last geo data from which this user accessed the system

  - `lastGeoData.countryCode` (string,null)
    ISO country code

  - `lastGeoData.country` (string,null)
    Country name

  - `lastGeoData.subdivision` (string,null)
    Subdivision or state/province name

  - `lastGeoData.city` (string,null)
    City name

  - `lastGeoData.timeZone` (string,null)
    IANA timezone identifier

  - `state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `actorType` (string, required)
    Actor type derived from entity type
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `groupId` (string,null)
    Group id if this user is a group channel
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `roles` (array)
    Roles assigned to this user

  - `roles.roleId` (string, required)
    Internal ID of this role

  - `roles.name` (string, required)
    Name of the role
    Example: "ADMIN"

  - `roles.description` (string,null)
    The description of the role
    Example: "The Admin role in the \"system\" scope"

  - `avatar` (object,null)
    User's avatar

  - `avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `avatar.meta` (object)
    Meta data

  - `avatar.meta.blurhash` (string,null)

  - `avatar.meta.name` (string,null)

  - `avatar.meta.altText` (string,null)

  - `avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `avatar.files` (array, required)
    List of all the files this upload has

  - `avatar.files.uri` (string,null, required)
    Full url of the file

  - `avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `avatar.files.meta.width` (integer,null)
    Media width

  - `avatar.files.meta.height` (integer,null)
    Media height

  - `avatar.files.meta.codec` (string,null)
    Video codec

  - `avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `avatar.files.size` (integer, required)
    File size in bytes

  - `avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `avatar.error` (string,null)
    Upload processing error

  - `avatar.cached` (boolean)
    true if cached

  - `avatar.logs` (string,null)
    Logs

  - `avatar.remote` (boolean)
    true if this upload is remote

  - `avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `channel` (boolean)
    Whether this is a channel. Deprecated: use 'entityType' instead.

## Response 403 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 404 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation


